<template>
  <div>
    <div class="bg-white grid-content">
      <div style="overflow: hidden; ">
        <div class="mytitle"><svg-icon icon-class="A5" class="myIcon" />A5采油地面工程运行系统采油井单井设备维护</div>
        <div class="myButtons">
          <el-button @click="handleClick('', 'add')">新增</el-button>
          <a :href=token><el-button style="margin: 0 10px;">下载模板</el-button></a>
          <el-button
            class="import-button"
            @click="uploadFiles"
          >
            <i class="icon"></i>
            批量导入
          </el-button>
          <el-dialog title="批量导入" :visible.sync="importDialog" class="dialog-md" width="500px" :before-close="handleClose1">
            <el-form ref="fileForm" label-position="center" style="width: 100%" enctype="multipart/form-data">
              <el-form-item align="center" label="">
                <el-upload
                  ref="upload"
                  class="uploadDialog"
                  name="myfile"
                  action="string"
                  :http-request="httpRequest"
                  :on-change="handleChange"
                  :on-remove="handleRemove"
                  :limit="1"
                  :file-list="fileList"
                  accept=".xlsx,.xls"
                  :auto-upload="true"
                >
                  <el-button slot="trigger" size="small" type="primary">上传文件</el-button>
                  <div class="el-upload__tip" style="color: grey;">建议下载模板进行导入</div>
                  <div class="el-upload__tip">1.仅支持上传.xls、.xlsx文件</div>
                  <div class="el-upload__tip">2.文件数据不能超过1000条</div>

                </el-upload>
              </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button size="small" @click="cancelUpload()">取消</el-button>
                <el-button type="primary" size="small" @click="upload()" :disabled="uploading">确定导入</el-button>
              </span>
          </el-dialog>
        </div>
      </div>
      <!-- 表格 -->
      <el-table
        :data="tableData"
        :header-cell-style="{ background: '#F5F7FA', color: '#909399' }"
        border
        stripe
      >
        <el-table-column
          align="center"
          type="index"
          label="序号"
          :index="indexMethod"
          width="60"
          fixed="left"
        >
        </el-table-column>
        <el-table-column fixed align="center" prop="rq" label="日期">
        </el-table-column>
        <el-table-column align="center" prop="tyjh" label="通用井号">
        </el-table-column>
        <el-table-column align="center" prop="bzjh" label="标准井号">
        </el-table-column>
        <el-table-column align="center" prop="dw" label="单位">
        </el-table-column>
        <el-table-column align="center" prop="jtfs" label="距替方式">
        </el-table-column>
        <el-table-column align="center" prop="sfbfj" label="是否报废井">
        </el-table-column>
        <el-table-column align="center" prop="js" label="井刷">
        </el-table-column>
        <el-table-column align="center" prop="czj" label="抽注机">
        </el-table-column>
        <el-table-column align="center" prop="ds" label="电视">
        </el-table-column>
        <el-table-column align="center" prop="kzg" label="控制柜">
        </el-table-column>
        <el-table-column align="center" prop="cys" label="采油树">
        </el-table-column>
        <el-table-column align="center" prop="pd" label="皮带">
        </el-table-column>

        <el-table-column align="center" prop="approveStatus" label="审核">
          <template slot-scope="scope">
            <el-button v-if="scope.row.approveStatus == 0" @click="handSubmit(scope.row)" type="text" style="color: orange">提交审核</el-button>
            <el-tooltip v-else :content="scope.row.approveBz" placement="right" effect="light" :disabled="!scope.row.approveBz">
              <el-badge :is-dot="scope.row.approveBz!=''&&scope.row.approveBz!=null" class="item">
                <el-tag :class="scope.row.approveBz?'tagstyle':''"
                        :type="
                      scope.row.approveStatus == '5'
                      ?'success'
                      :scope.row.approveStatus == '4'
                        ? 'danger'
                        : scope.row.approveStatus == '3'
                          ? ''
                          :scope.row.approveStatus == '2'
                            ? 'danger'
                            :scope.row.approveStatus == '1'
                              ? 'warning'
                              :'info'"
                        disable-transitions>{{
                    scope.row.approveStatus == '5'
                      ?'管理部通过'
                      :scope.row.approveStatus == '4'
                        ? '管理部未通过'
                        : scope.row.approveStatus == '3'
                          ? '作业区通过待管理部审核'
                          :scope.row.approveStatus == '2'
                            ? '作业区未通过'
                            :scope.row.approveStatus == '1'
                              ? '已上报待作业区审核'
                              :'待上报'
                  }}</el-tag>
              </el-badge>
            </el-tooltip>
          </template>
        </el-table-column>

        <el-table-column align="center" label="操作" width="140" fixed="right">
          <template slot-scope="scope">
            <el-button
              @click="handleClick(scope.row, 'check')"
              type="text"
              style="color: #2ec02e"
            >查看</el-button
            >
            <el-button @click="handleClick(scope.row, 'edit')" type="text"
            >编辑</el-button
            >
            <el-button
              @click="handleDelete(scope.row)"
              type="text"
              style="color: red"
            >删除</el-button
            >
          </template>
        </el-table-column>
      </el-table>
      <!-- 分页器 -->
      <el-pagination align='right' background @size-change="handleSizeChange" @current-change="handleCurrentChange"
        :current-page="pageNo" :page-sizes="[5, 10, 20, 30, 40, 50]" :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper" :total="total">
      </el-pagination>
    </div>

    <!-- 弹出框 -->
    <el-dialog
      :title="myDialogTitle"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
      custom-class="saveAsDialog"
    >

      <el-form
        :inline="true"
        :model="A5Form"
        class="demo-form-inline"
        :rules="rules"
        ref="A5Form"
        :disabled="isInput"
        label-position="left"
        label-width="130px"
      >
        
        <!-- <el-divider content-position="left">基础信息</el-divider> -->
        <el-row>
          <el-col :span="12">
            <el-form-item label="通用井号:" prop="tyjh">
              <el-input v-model="A5Form.tyjh" placeholder="请输入通用井号"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="标准井号:" prop="bzjh">
              <el-input v-model="A5Form.bzjh" placeholder="请输入标准井号"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item label="单位:" prop="dw">
              <el-input v-model="A5Form.dw" placeholder="请输入单位"></el-input>
            </el-form-item>
          </el-col>
          <!-- <el-col :span="12">
            <el-form-item label="投产日期:" prop="tcrq">
              <el-date-picker v-model="A5Form.tcrq" align="right" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
              </el-date-picker>
            </el-form-item>
          </el-col> -->
          <el-col :span="12">
            <el-form-item label="配备日期:">
              <el-date-picker
                v-model="A5Form.rq"
                type="date"
                placeholder="选择日期时间"
                align="right"
                :picker-options="pickerOptions"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="距替方式:">
              <el-input v-model="A5Form.jtfs" placeholder="请输入距替方式"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="是否报废井:">
              <el-input v-model="A5Form.sfbfj" placeholder="请输入是否报废井"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="井刷:">
              <el-input v-model="A5Form.js" placeholder="请输入井刷"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="抽注机:">
              <el-input v-model="A5Form.czj" placeholder="请输入抽注机"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="电视:">
              <el-input v-model="A5Form.ds" placeholder="请输入电视"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="控制柜:">
              <el-input v-model="A5Form.kzg" placeholder="请输入控制柜"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="12">
            <el-form-item label="采油树:">
              <el-input v-model="A5Form.cys" placeholder="请输入开采层位"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="皮带:">
              <el-input v-model="A5Form.pd" placeholder="请输入皮带"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

      </el-form>

      <div slot="footer" class="dialog-footer" v-show="!ischeck">
        <el-button @click="close('A5Form')">取 消</el-button>
        <el-button type="primary" @click="submitForm('A5Form')">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import axios from "axios";
import A5Api from '@/api/sjtb/scgl/A5';
import { getToken } from "@/utils/auth";
import xfsbjcsjApi from "@/api/jcsj/aqyx/xf/xfsbjcsj";
export default {
  data() {
    return {
      leve:'',
      pageNo: 1, //当前页码
      pageSize: 10, //每页显示数量
      total: 0, //总数量
      //当前页码
      currentPage: 1,
      tableData:[],
      //表单填报的数据
      A5Form: {
        rq:"",
        id: '',
        tyjh: '',//通用井号
        bzjh: '',//标准井号
        dw: '',//单位
        jtfs: '',//距替方式
        sfbfj: '',//是否报废井
        js: '',//井刷
        czj: '',//抽注机
        ds: '',//电视
        kzg: '',//控制柜
        cys: '',//采油树
        pd: '',//皮带
        approveStatus:'',
        approveBz:'',
      },
      //验证规则
      rules: {
        tyjh: [
          { required: true, message: '请输入通用井号', trigger: 'blur' },
        ],
        bzjh: [
          { required: true, message: '请输入标准井号', trigger: 'blur' }
        ],
        dw: [
          { required: true, message: '请输入单位', trigger: 'biur' }
        ],
      },
      //时间快捷选择
      pickerOptions: {
        // disabledDate(time) {
        //   return time.getTime() > Date.now();
        // },
        shortcuts: [{
          text: '今天',
          onClick(picker) {
            picker.$emit('pick', new Date());
          }
        }, {
          text: '昨天',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24);
            picker.$emit('pick', date);
          }
        }, {
          text: '一周前',
          onClick(picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
            picker.$emit('pick', date);
          }
        }]
      },
      //获取当前日期
      currentTime: '',
      //编辑框是否显示
      dialogFormVisible: false,
      //弹出框是否是查看
      ischeck: false,
      //弹出框是否有提交审核按钮
      ischeckSh: false,
      //控制查看时不可更改数据
      isInput: false,
      //弹出框标题
      myDialogTitle: '',
      file: null,
      //加载动画
      uploadLoading: false,
      //控制弹出框显示与否
      uploadShowDialog: false,
      //上传地址
      uploadURL: '',
      //loading加载中
      downloadLoading: '',
      importDialog: false,
      urlFile: '',
      uploading: true,
      token: '',
      fileList:[]
    }
  },
  created() {
    this.search();
    this.data.leve = sessionStorage.getItem("userLeve");
  },
  mounted() {
    this.filterTime();
    // this.initDate();
    this.token = "http://47.108.251.250:3296/api/csbb/downLoadExcel?token=" + getToken();
  },
  methods: {
    /**
    * 查询列表
    */
    async search() {
      // this.pageNo = pageNo; //当前页码
      // this.pageSize = pageSize; //每页显示数量
      //发送查询请求
      let res = await A5Api.getA5List(this.pageNo, this.pageSize);
      //判断是否成功
      if (res.success) {
        //赋值
        this.tableData = res.data.records;
        //总数量
        this.total = res.data.total;
      }
    },
    onSubmit() {
      console.log('submit!');
    },
    //关闭对话框
    handleClose(done) {
      // 清空表单
      // this.$refs['A5Form'].resetFields();
      // 清空表单校验，避免再次进来会出现上次校验的记录
      this.$refs['A5Form'].clearValidate()
      done()

    },
    handleClose1(done) {
      this.urlFile = ''
      this.fileList = [];
      done()
    },
    // 弹框关闭触发
    close(formName) {
      this.dialogFormVisible = false;
      // 清空表单
      // this.$refs[formName].resetFields();
      // 清空表单校验，避免再次进来会出现上次校验的记录
      this.$refs[formName].clearValidate()
    },

    submitForm(formName) {
      //表单验证
      this.$refs[formName].validate(async (valid) => {
        if (valid) {
          let res = null;
          console.log("111" + this.A5Form.sbid);
          //判断ID是否为空
          if (this.isadd) {
            console.log(this.A5Form);
            //发送添加请求
            res = await A5Api.addA5(this.A5Form);
          } else {
            this.A5Form.approveStatus = 0
            this.A5Form.approveBz = ''
            //发送修改请求
            res = await A5Api.updateA5(this.A5Form);
          }
          console.log(res);
          //判断是否成功
          if (res.success) {
            this.$message.success(res.message);
            //刷新
            this.search();
            //关闭窗口
            this.dialogFormVisible = false;
          } else {
            console.log(res);
            this.$message.error(res.message);
          }
        }
      });
    },
    //提交审核
    async submitSh(formName) {

      let res = null;
      //发送修改请求
      this.A5Form.approveStatus = 1;
      this.A5Form.approveBz = '';
      // console.log(334345)
      res = await A5Api.updateA5(this.A5Form);

      console.log(res)
      //判断是否成功
      if (res.success) {
        this.$message.success(res.message);
        //刷新
        this.search();
        //关闭窗口
        this.dialogFormVisible = false;
      } else {
        console.log(res)
        this.$message.error(res.message);
      }

    },
    handleClick(row, handle) {
      // console.log(row.approveStatus);
      this.dialogFormVisible = true;
      if (handle == "check") {
        this.myDialogTitle = "A5采油地面工程运行系统采油井单井设备维护";
        this.ischeck = true;
        this.isInput = true; // 1.表单禁用
        // this.cybzjcsjForm = row
        this.$objCopy(row, this.A5Form); //把当前要编辑的数据复制到数据域，给表单回显
        this.$message({ message: "成功打开", type: "success" });
      } else if (handle == "edit") {
        if(row.approveStatus == 0 || row.approveStatus == 2 || row.approveStatus == 4){
          this.myDialogTitle = 'A5采油地面工程运行系统采油井单井设备维护数据编辑'
          this.ischeck = false
          this.isadd = false
          this.isInput = false
          this.$objCopy(row, this.A5Form);//把当前要编辑的数据复制到数据域，给表单回显
        }else{
          this.dialogFormVisible = false;
          this.$message.error('此状态不可编辑！');
        }
      } else if (handle == "add") {
        // this.jianjcsjForm ={}
        this.$resetForm("bjcsjForm", this.A5Form); //清空表单数据
        this.myDialogTitle = "A5采油地面工程运行系统采油井单井设备维护数据填报";
        this.ischeck = false;
        this.isInput = false;
        this.isadd = true;
      }
    },
    uploadFiles() {
      this.importDialog = true
      this.urlFile = ''
    },
    cancelUpload() {
      this.urlFile = ''
      this.fileList = [];
      this.importDialog = false
    },
    //  监听改变
    handleChange(file, fileList) {
      this.fileList = fileList
    },
    // 移除
    handleRemove(file, fileList) {
      this.fileList = fileList
    },
    beforeAvatarUpload(file) {
      //1MB=1024*1024(1MB=1024KB 1KB=1024MB)
      const is10M = file.size / 1024 / 1024 < 10;
      //限制文件上传大小
      if (!is10M) {
        this.$message.error("上传图片大小不能超过 10MB!");
        return false
      }
      return true
    },
    // 自定义上传Excel方法
    httpRequest(param) {
      // console.log(param.file);
      this.uploading = true;
      const File = this.fileList[0].raw;
      // const File = param.file
      console.log(File);
      // console.log(this.fileList);
      let formData = new FormData();
      formData.append("myfile", File);
      console.log(formData.get("myfile"));

      axios({
        url: "http://47.108.251.250:3296/api/fileAbout/fileUpload",
        method: "post",
        headers: {
          "token": getToken(),
          "Content-Type": "multipart/form-data",
        },
        data: formData,
      }).then(
        (response) => {
          if (response.data.success === true && response.data.data !== "") {
            console.log(response.data);
            this.urlFile = response.data.data;
            console.log(this.urlFile);
            this.$message.success(response.data.message);
            param.onSuccess();
            this.uploading = false;
          } else {
            this.$message.error('上传失败');
          }
        },
        (error) => {
          console.log(error);
          this.$message.error(response.data.message);
        }
      );
    },
    //文件导入
    upload() {
      let formData = new FormData();
      formData.append("filePath", this.urlFile);
      console.log(formData.get("filePath"));
      axios({
        url: "http://47.108.251.250:3296/api/a5cydmgcyxxtcyjdjsbwh/batchInput",
        method: "post",
        headers: {
          "token": getToken(),
          "Content-Type": "multipart/form-data",
        },
        data: formData,
      }).then(
        (response) => {
          if (response.data.success === true) {
            console.log(response.data);
            this.$message.success(response.data.message);
            //刷新
            this.search();
            //关闭窗口
            this.importDialog = false;
            this.fileList = [];
          } else {
            this.$message.error('导入失败');
          }
        },
        (error) => {
          console.log(error);
          this.$message.error(response.data.message);
        }
      );
    },

    //下载模板
    downloadExcel() {
      window.open("http://47.108.251.250:3296/api/a5cydmgcyxxtcyjdjsbwh/downLoadExcel?token=" + getToken());
      // res = A5Api.updateSyj(this.A5Form);
      // axios({
      // url: "http://47.108.251.250:3296/api/A5/downLoadExcel",
      // method: "get",
      // headers: {
      //   "token": getToken(),
      //   "Content-Type": "application/vnd.ms-excel",
      // },
      // // data: formData,
      //   }).then(
      //     (response) => {
      //         console.log(response);
      //     },
      //     (error) => {
      //       console.log(error);
      //       // this.$message.error(response.data.message);
      //     }
      //   );

      // console.log(res)
      // //判断是否成功
      // if (res.success) {
      //     this.$message.success(res.message);
      //     //刷新
      //     this.search();
      //     //关闭窗口
      //     this.dialogFormVisible = false;
      // } else {
      //   console.log(res)
      //     this.$message.error(res.message);
      // }
    },

    //删除行数据

    async handleDelete(row) {
      console.log(row)
      if(row.approveStatus == 0 || row.approveStatus == 2 || row.approveStatus == 4 || this.leve == 999 || this.leve == 1000){
        let confirm = await this.$myconfirm("确定要删除该数据吗?");
        console.log(confirm)
        if (confirm) {
          //发送删除请求
          let res = await A5Api.delete({ id:row.id});
          console.log(res)
          debugger
          //判断是否成功
          if (res.success) {
            //成功提示
            this.$message.success(res.message);
            //刷新
            this.search();
          } else {
            //失败提示
            this.$message.error(res.message);
          }
        }
      }else{
        this.$message.error('此状态不可删除！');
      }
    },
    //批量删除
    handleSelectionChange(val){
      this.multipleSelection = val;
      console.log(this.multipleSelection);
    },
    async handleBDelete() {
      //判断是否可以删除
          //确认是否删除
          let confirm = await this.$myconfirm("确定要删除该数据吗?");
          console.log(confirm)
          var ids = []
          if (confirm) {
              for(let j=0 ; j<this.multipleSelection.length; j++){
                if (this.multipleSelection[j].approveStatus == 2) {
                    //提示不能删除
                    console.log(this.multipleSelection[j].approveStatus)
                    this.$message({ message: '有已通过数据不可删除！', type: 'error' });
                    return;

                  }
                ids[j] = this.multipleSelection[j].id
              }
            console.log("ids",ids)
            // const ids = ids.toString();
            // console.log("ids",ids)
            //发送删除请求
            console.log('111')
            let res = await A5Api.BdeleteA5(ids);
            console.log('222')
            console.log(res)
            //判断是否成功
            if (res.success) {
              //成功提示
              this.$message.success(res.message);
              //刷新
              this.search();
            } else {
              //失败提示
              this.$message.error(res.message);
            }
          }
        },
    //上报
    handSubmit(row){
      this.$confirm('确定提交审核?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        let res = null;
        this.$objCopy(row, this.A5Form);
        //审核
        this.A5Form.approveStatus = 1
        console.log(this.A5Form);
        res = await A5Api.updateA5(this.A5Form);

        console.log(res)
        //判断是否成功
        if (res.success) {
          // this.$message.success(res.message);
          this.$message({ message: '提交审核成功！', type: 'success' });
          //刷新
          this.search();

        } else {
          console.log(res)
          this.$message.error(res.message);
        }
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消'
        });
      });

    },







    // uploadData() {
    //   console.log('批量导入成功')
    // },
    // //每页条数改变时触发 选择一页显示多少行
    // handleSizeChange(val) {
    //   console.log(`每页 ${val} 条`);
    //   this.currentPage = 1;
    //   this.pageSize = val;
    // },
    // //当前页改变时触发 跳转其他页
    // handleCurrentChange(val) {
    //   console.log(`当前页: ${val}`);
    //   this.currentPage = val;
    // },
    /*** 当每页数量发生变化时触发该事件 */
    handleSizeChange(size) {
      console.log(size);
      this.pageSize = size;
      //将每页显示的数量交给成员变量
      this.search(this.pageNo, size);
    },
    /*** 当页码发生变化时触发该事件 */
    handleCurrentChange(page) {
      console.log(page);
      this.pageNo = page;
      //调用查询方法
      this.search(page, this.pageSize);
    },
    // 序号计算
    indexMethod(index) {
      // index默认在0开始，这里+1
      return index + 1 + (this.pageNo - 1) * this.pageSize
    },
    // 获取当前日期
    filterTime() {
      var date = new Date();
      var y = date.getFullYear();
      var m = date.getMonth() + 1;
      m = m < 10 ? '0' + m : m;
      var d = date.getDate();
      d = d < 10 ? '0' + d : d;
      this.currentTime = y + '-' + m + '-' + d;
    },
  }
}
</script>

<style lang="scss" scoped>
// 标题
.mytitle {
  font-size: large;
  padding-left: 10px;
  margin-bottom: 16px;
  float: left;
}

//按钮组
.myButtons {
  float: right
}

//格子的样式
.bg-white {
  background: #ffffff;
}

.grid-content {
  padding: 10px;
  margin-bottom: 10px;
  border-radius: 4px;
}

.calendar ::v-deep .el-button-group::before {
  display: none;
}

.calendar ::v-deep .el-button-group::after {
  display: none;
}

// 分割线样式
.el-divider--horizontal {
  display: block;
  height: 2px;
  width: 100%;
  margin: 24px 0;
}

// 表单各项的样式
.el-form-item {
  margin: 15px 10px 15px 10px;
}

//表单禁用字体样式
.el-input.is-disabled ::v-deep .el-input__inner {
  color: #606266;
}

//对话框宽度
// .customWidth{
//         width:80%;
//     }
::v-deep .saveAsDialog {
  width: 60% !important;
}

::v-deep .el-table .cell {
  overflow: unset
}

.el-date-editor.el-input,
.el-date-editor.el-input__inner {
  width: 180px;
}

.el-input {
  width: 180px;
}

.tagstyle {
  cursor: pointer;
}
</style>
